МІНІСТЕРСТВО ОСВІТИ ТА НАУКИ УКРАЇНИ
Національний університет “Львівська політехніка”
Звіт
до лабораторноі работи № 2
Реалізація абстракцій в мові програмування С++.
Львів 2010
1. МЕТА РОБОТИ
Мета роботи - Реалізація абстракцій в мові програмування С++.
2. ТЕОРЕТИЧНА ЧАСТИНА
1. Компоненти об’єктно-орієнтовааного проектування. Розрізняють чисто об’єктно-орієнтовані мови та змішані.
До перших належать Smalltalk, Ada, Simula, до других С++, CLOS, Об’єктний Паскаль та інші.
Введемо визначення п’яти ключових компонент об’єктно-орієнтованого проектування: - Об’єкт Об’єкт - це інкапсульована абстракція, яка включає інформацію про стан і чітко визначену множину протоколу доступу (повідомлення, які опрацьовує об’єкт).
- Повідомлення Повідомлення - це спеціальний символ, ідентифікатор або ключове слово з або без параметрів, яке представляє дію.
- Клас Представляє певний тип об’єктів і задається прои допомозі опису класу, який визначає змінні стану і протокол доступа до об’єктів даного класу. Класи організуються ієрархічно, причому підкласи наслідують властивості базових класів. В деяких об’ктно-орієнтованих мовах класи - це також і об’єкти.
- Екземпляр об’єкта Об’єкти належать до будь-якого класу. Властивості екземпляра об’єкта визначаються описом класу.
- Метод Метод існує для кожного повідомлення, визначеного для деякого класу. Метод визначає реакцію об’єкта на повідомлення. Як правило складається з ряду виразів і може використовувати протокол з іншого класу.2. Опис абстракцій в мові С++.
Мова С++ використовує подібну термінологію
Клас Вводить новий тип даних
Об’єкт Змінна типу className
Дані стану Об’являються в опису класу і називаються членами
Повідомлення Повідомлення, які об’єкт може опрацювати, вказуються при допомозі прототипів функцій в описі класу. Прототипи функцій включають ім’я функції, список параметрів та тип, який повертає функція.
Метод Це визначення (реалізіція) функцій. Прототипи функцій і їх визначення разом представляють собою повідомлення, які об’єкт може опрацьовувати. В сукупності вони називаються функціями-членами. До членів класу відносяться функції-члени і поля даних.
Підклас Похідний клас. Його суперклас називається базовим класом.
3. ЛАБОРАТОРНЕ ЗАВДАННЯ
Варіант № 20
Скласти програму на С++, яка представляє стандартний тип як об’єкт і дозволяє порівнювати дані між собою, проводити операції, що допускаються над даним типом integer і вивести на екран ці дані.
Текст програми
#include "stdafx.h"
#include<iostream>
#include<stdlib.h>
using namespace std;
class INTEGER {
private:
int value;
public:
// Конструктори і деструктори
INTEGER() {}
INTEGER(int anlnt) { value = anlnt; }
~INTEGER() {}
//Mетоди доступа
int getValue() { return value; }
void setVlue(int aValue) { value = aValue; }
// Методи порівняння
friend int operator==(const INTEGER& anlnt1, const INTEGER& anlnt2)
{
return anlnt1.value == anlnt2.value;
}
friend int operator>(const INTEGER& anlnt1, const INTEGER& anlnt2)
{
return anlnt1.value > anlnt2.value;
}
friend int operator<(const INTEGER& anlnt1, const INTEGER& anlnt2)
{
return anlnt1.value < anlnt2.value;
}
//Арифметичні методи
friend INTEGER operator+(const INTEGER& anlnt1, const INTEGER& anlnt2)
{
return INTEGER(anlnt1.value + anlnt2.value);
}
friend INTEGER operator-(const INTEGER& anlnt1, const INTEGER& anlnt2)
{
return(anlnt1.value - anlnt2.value);
}
friend int operator*(const INTEGER& anlnt1, const INTEGER& anlnt2)
{
return(anlnt1.value * anlnt2.value);
}
friend INTEGER operator/(const INTEGER& anlnt1, const INTEGER& anlnt2)
{
if(anlnt2.value == 0) {
cout << "Divide by zero.Stop";
exit(1);
}
return(anlnt1.value / anlnt2.value);
}
//Методи друку
friend ostream& operator<<(ostream& stream, const INTEGER& anlnt)
{
stream << anlnt.value;
return stream;
}
};
void main()
{
INTEGER one,two,three,four, varOne;
char choice;
int a,b;
bool fQuit=false;...